const openai = require('../openai')
module.exports = {

    // 测试用的处理函数
    async test(ctx) {
        ctx.body = {
            msg: 'hello,world'
        }
    },
    // 聊天的处理函数
    async chat(ctx) {
        // 校验参数
        ctx.verifyParams({
            prompt: 'string'
        })
        // 如果session中没有上下文则设置初始空字符串
        if (!ctx.session.chatgptSessionPrompt) {
            ctx.session.chatgptSessionPrompt = ''
        }
        console.log(ctx.session.chatgptSessionPrompt);
        const prompt = ctx.session.chatgptSessionPrompt + `\n提问:` + ctx.request.body.prompt + `\nAI:`
        const completion = await openai.createCompletion({
            model: "gpt-3.5-turbo",
            prompt,
            temperature: 0.9,
            max_tokens: 1200,
            top_p: 1,
            frequency_penalty: 0,
            presence_penalty: 0.6,
            stop: ["\n提问:", "\nAI:"],
        })
        ctx.session.chatgptSessionPrompt = prompt + completion.data.choices[0].text
        // 返回结果
        ctx.body = completion.data
    },
    // 图像的处理函数
    async image(ctx) {
        // 校验参数
        ctx.verifyParams({
            prompt: 'string',
            n: 'string',
            size: 'string'
        })
        const { prompt, n, size, response_format } = ctx.request.body
        const image = await openai.createImage({
            prompt,
            n: Number(n),
            size,
            response_format
        })
        // 返回结果
        ctx.body = image.data
    }

}